# 不懂科技就会落伍！每天进步一点点!
# 今天量子钛又学习了Python字符串，欢迎大神们指正错误！
print('''不懂科技就会落伍！每天进步一点点，
      今天量子钛又学习了Python字符串，欢迎大神们指正错误！''')

# Python 字符串 (Strings)
# 字符串是Python中用于表示文本数据的数据类型。
# 简单来说，字符串就是一串字符，可以包含字母、数字、符号等等。
# 在Python中，字符串可以使用单引号 (') 或双引号 (") 包裹起来。

# 1. 字符串的定义：单引号和双引号
# 在Python中，单引号和双引号都可以用来定义字符串，它们的效果是完全一样的。
# 选择使用哪种引号，通常取决于个人喜好或者字符串本身的内容。

print("使用双引号:")
print("Hello")   # 使用双引号打印 "Hello"
print('使用单引号:')
print('Hello')   # 使用单引号打印 'Hello'

# 2. 引号嵌套：在字符串中使用引号
# 如果字符串本身就包含引号，那么可以使用与字符串外部引号不同的引号来包裹字符串，
# 这样就避免了引号的混淆，让Python知道哪些引号是字符串的一部分，哪些是字符串的边界。

print("单引号中嵌套双引号:")
print('He is called "Johnny"')  # 单引号包裹字符串，内部可以使用双引号
print("双引号中嵌套单引号:")
print("He is called 'Johnny'")  # 双引号包裹字符串，内部可以使用单引号
print("直接使用转义字符:")
print("It's alright")        
# 字符串中使用单引号，外部用双引号包裹，或者直接使用 'It\'s alright' 转义字符

# 3. 将字符串赋值给变量
# 就像其他数据类型一样，字符串也可以赋值给变量。
# 变量名后面跟上等号 (=)，再跟上字符串，就可以将字符串存储到变量中。

a = "Hello"   # 将字符串 "Hello" 赋值给变量 a
print("变量 a 的值是:")
print(a)       # 打印变量 a 的值

# 4. 多行字符串
# 如果字符串内容很长，需要跨越多行，
# 可以使用三引号（''' 或 """）来定义多行字符串。
# 多行字符串可以保留字符串的原始格式，包括换行符和空格。

print("使用三双引号定义多行字符串:")
a = """Lorem ipsum dolor sit amet,consectetur adipiscing elit,
sed do eiusmod tempor incididunt  ut labore et dolore magna aliqua."""
print(a)       # 打印多行字符串 a

print("\n使用三单引号定义多行字符串:") # \n 表示换行
a = '''Lorem ipsum dolor sit amet,consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.'''
print(a)       # 打印多行字符串 a
# 注意：输出结果中的换行位置与代码中的换行位置一致。

# 5. 字符串是字符数组
# 类似于其他编程语言，Python中的字符串可以看作是字符的数组（或者说是序列）。
# 我们可以使用方括号 [] 来访问字符串中特定位置的字符。
# 需要注意的是，Python中字符串的索引是从 0 开始的
# 也就是说，第一个字符的索引是 0，第二个是 1，以此类推。
# 另外，Python没有单独的字符类型，一个字符就是一个长度为 1 的字符串。

a = "Hello, World!"
print("字符串 a 的内容是:", a)
print("字符串 a 的第一个字符 (索引 0) 是:", a[0])  # 获取索引为 0 的字符，即 'H'
print("字符串 a 的第二个字符 (索引 1) 是:", a[1])  # 获取索引为 1 的字符，即 'e'

# 6. 遍历字符串
# 因为字符串是字符数组，我们可以使用 `for` 循环来遍历字符串中的每个字符。
# 这在需要逐个处理字符串中的字符时非常有用。

print("遍历字符串 \"banana\":")
for x in "banana":
    print(x)      # 逐个打印字符串 "banana" 中的字符

# 7. 字符串长度
# 使用内置函数 `len()` 可以获取字符串的长度，即字符串中包含多少个字符。
# 这对于了解字符串的大小非常有用。

a = "Hello, World!"
print("字符串 a 的内容是:", a)
print("字符串 a 的长度是:", len(a))  # 使用 len() 函数获取字符串 a 的长度

# 8. 检查字符串中是否包含特定短语或字符
# 关键字 `in` 可以用来检查一个字符串是否包含另一个短语或字符。
# 它会返回一个布尔值：如果包含，则返回 `True`，否则返回 `False`。

txt = "The best things in life are free!"
print("文本 txt 的内容是:", txt)
print("字符串 \"free\" 是否在 txt 中:", "free" in txt)  
# 检查 "free" 是否在 txt 中，结果为 True
print("字符串 \"expensive\" 是否在 txt 中:", "expensive" in txt) 
# 检查 "expensive" 是否在 txt 中，结果为 False

# 9. 在 if 语句中使用 in 关键字
# `in` 关键字通常与 `if` 语句结合使用，根据字符串是否包含特定内容来执行不同的代码块。
txt = "The best things in life are free!"
print("文本 txt 的内容是:", txt)
if "free" in txt:
    print("Yes, 'free' is present.")  # 如果 "free" 在 txt 中，则打印这句话

# 10. 检查字符串中是否不包含特定短语或字符
# 关键字 `not in` 与 `in` 关键字相反，用于检查一个字符串是否不包含另一个短语或字符。
# 同样，它也会返回一个布尔值：如果不包含，则返回 `True`，否则返回 `False`。
txt = "The best things in life are free!"
print("文本 txt 的内容是:", txt)
print("字符串 \"expensive\" 是否不在 txt 中:", "expensive" not in txt) 
# 检查 "expensive" 是否不在 txt 中，结果为 True
print("字符串 \"free\" 是否不在 txt 中:", "free" not in txt)     
# 检查 "free" 是否不在 txt 中，结果为 False

# 11. 在 if 语句中使用 not in 关键字
# `not in` 关键字也可以在 `if` 语句中使用，根据字符串是否不包含特定内容来执行不同的代码块。
txt = "The best things in life are free!"
print("文本 txt 的内容是:", txt)
if "expensive" not in txt:
    print("No, 'expensive' is NOT present.")
# 如果 "expensive" 不在 txt 中，则打印这句话

# 总结：
# - 字符串是Python中表示文本的数据类型，可以使用单引号或双引号定义。
# - 可以使用三引号定义多行字符串。
# - 字符串可以像数组一样通过索引访问字符。
# - 可以使用 `for` 循环遍历字符串中的字符。
# - `len()` 函数用于获取字符串的长度。
# - `in` 和 `not in` 关键字用于检查字符串是否包含或不包含特定内容。

# 字符串在Python编程中应用非常广泛，掌握字符串的基本操作是学习Python的重要一步。
# 通过本期内容的学习，相信你对Python字符串已经有了更深入的了解！

# 好啦，这期内容到此结束，你是不是感觉又进步了一点点？点赞关注不迷路！
print("好啦，这期内容到此结束，你是不是感觉又进步了一点点？点赞关注不迷路！")